package priv.wangy.micro.common.po.page;

import lombok.Data;
import lombok.Singular;
import lombok.experimental.SuperBuilder;

import java.util.List;
import java.util.Objects;

/**
 * 分页
 *
 * @author zhangjq
 * @since 2024-05-27
 */
@Data
@SuperBuilder
public abstract class PageHelper<T> {

    /**
     * 分页条件
     */
    private PageCriteria page;

    /**
     * 排序条件
     */
    @Singular("sort")
    private List<SortCriteria> sorts;

    /**
     * 数据总条数
     */
    private long total;

    /**
     * 当前页的数据列表
     */
    private List<T> content;

    /**
     * 数据总页数
     */
    public int getPages() {
        if (Objects.isNull(this.page) || this.page.getPageSize() <= 0) {
            return 0;
        }
        return (int) Math.ceil((double) this.total / (double) this.page.getPageSize());
    }
}
